package net.zigin.nhi.could.waste.service.impl;

import net.zigin.commons.util.ParamsMapUtil;
import net.zigin.commons.util.ReflectUtil;
import net.zigin.commons.util.StringUtil;
import net.zigin.nhi.could.waste.aop.LoginAspect;
import net.zigin.nhi.could.waste.service.SysRoleService;
import net.zigin.nhi.could.waste.vo.TokenInfoBo;
import net.zigin.nhi.could.waste.dao.SysUserMapper;
import net.zigin.nhi.could.waste.dto.SysUserAdminDto;
import net.zigin.nhi.could.waste.model.SysUser;
import net.zigin.nhi.could.waste.service.SysUserService;
import net.zigin.nhi.could.waste.vo.SysUserAdminVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import net.zigin.nhi.could.waste.dao.BaseMapper;
import net.zigin.nhi.could.waste.dao.SysUserAdminMapper;
import net.zigin.nhi.could.waste.model.SysUserAdmin;
import net.zigin.nhi.could.waste.service.SysUserAdminService;

import java.util.Date;
import java.util.List;
import java.util.Map;

/*#################################################################*
# 说明:以下代码通过哲勤代码生成工具自动生成    
# 工具:GeneratorCode
# 作者:mgw1986                                                  
# 生成时间:2021-9-7 19:08:57                                               
##################################################################*/


/**
 * SysUserAdmin服务实现类
 *
 * @author mgw1986
 * @version V1.0
 * @ClassName: SysUserAdminServiceImpl
 * @date 2021-9-7 19:08:57
 */
@Service
public class SysUserAdminServiceImpl extends AbstractServiceImpl<SysUserAdmin, String> implements SysUserAdminService {
    @Autowired
    private SysUserAdminMapper sysUserAdminMapper;
    @Autowired
    private SysUserMapper sysUserMapper;
    @Autowired
    private SysUserService sysUserService;
    @Autowired
    private SysRoleService sysRoleService;

    @Override
    public BaseMapper<SysUserAdmin, String> getMapper() {
        return sysUserAdminMapper;
    }


    @Override
    public String saveOrUpdate(SysUserAdminDto sysUserAdminDto) {
        TokenInfoBo tokenInfo = LoginAspect.getTokenInfo();
        if (StringUtil.isNullOrEmpty(sysUserAdminDto.getId())) {
            SysUser sysUser = new SysUser(sysUserAdminDto);
            sysUserService.checkMobileExist(sysUserAdminDto.getMobile());
            sysUserMapper.insert(sysUser);
            sysRoleService.concatUser(sysUser.getId(), 3);
            sysUserAdminDto.setId(StringUtil.get32UUID());
            sysUserAdminDto.setSysUserId(sysUser.getId());
            sysUserAdminDto.setCreateUser(tokenInfo.getLoginName());
            sysUserAdminDto.setCreateTime(new Date());
            sysUserAdminDto.setModifyTime(new Date());
            SysUserAdmin sysUserAdmin = ReflectUtil.copyProperties(sysUserAdminDto, SysUserAdmin.class);
            sysUserAdminMapper.insert(sysUserAdmin);
            return sysUserAdmin.getId();
        } else {
            // 对user进行编辑
            if (!StringUtil.isNullOrEmpty(sysUserAdminDto.getSysUserId()) && !StringUtil.isNullOrEmpty(sysUserAdminDto.getMobile())) {
                SysUser sysUser = new SysUser();
                sysUser.setId(sysUserAdminDto.getSysUserId());
                sysUser.setMobile(sysUserAdminDto.getMobile());
                sysUserMapper.updateByPrimaryKeySelective(sysUser);
            }
            sysUserAdminDto.setModifyUser(tokenInfo.getLoginName());
            sysUserAdminDto.setModifyTime(new Date());
            SysUserAdmin sysUserAdmin = ReflectUtil.copyProperties(sysUserAdminDto, SysUserAdmin.class);
            sysUserAdminMapper.updateByPrimaryKeySelective(sysUserAdmin);
            return sysUserAdmin.getId();
        }
    }

    @Override
    public List<SysUserAdminVo> getList(SysUserAdminDto sysUserAdminDto) {
        Map<String, Object> paramMap = getUserAdminParam(sysUserAdminDto);
        return sysUserAdminMapper.getInfoPageList(paramMap);
    }

    @Override
    public Integer getCount(SysUserAdminDto sysUserAdminDto) {
        Map<String, Object> paramMap = getUserAdminParam(sysUserAdminDto);
        return sysUserAdminMapper.selectCount(paramMap);
    }

    @Override
    public SysUserAdminVo getInfoById(String id) {
        return sysUserAdminMapper.getInfoById(id);
    }

    @Override
    public void remove(String id) {
        SysUserAdmin sysUserAdmin = sysUserAdminMapper.selectByPrimaryKey(id);
        sysUserMapper.deleteByPrimaryKey(sysUserAdmin.getSysUserId());
        sysUserAdminMapper.deleteByPrimaryKey(id);
    }

    public Map<String, Object> getUserAdminParam(SysUserAdminDto sysUserAdminDto) {
        return ParamsMapUtil.getInstance()
                .addParam("realName", sysUserAdminDto.getRealName())
                .addParam("pageSize", sysUserAdminDto.getPageSize())
                .addParam("pageIndex", sysUserAdminDto.getPageIndex());
    }

}